home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / libx11 / include / x11 / extensions / pexprotost.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  13KB  |  562 lines

  1. /* $XConsortium: PEXprotost.h,v 5.3 91/07/01 16:19:04 hersh Exp $ */
  2.  
  3.  
  4. /***********************************************************
  5. Copyright 1989, 1990, 1991 by Sun Microsystems, Inc. and the X Consortium.
  6.  
  7.                         All Rights Reserved
  8.  
  9. Permission to use, copy, modify, and distribute this software and its 
  10. documentation for any purpose and without fee is hereby granted, 
  11. provided that the above copyright notice appear in all copies and that
  12. both that copyright notice and this permission notice appear in 
  13. supporting documentation, and that the names of Sun Microsystems,
  14. the X Consortium, and MIT not be used in advertising or publicity 
  15. pertaining to distribution of the software without specific, written 
  16. prior permission.  
  17.  
  18. SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
  19. INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT 
  20. SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
  21. DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  23. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  24. SOFTWARE.
  25.  
  26. ******************************************************************/
  27.  
  28. #ifndef PEXPROTOSTR_H
  29. #define PEXPROTOSTR_H
  30.  
  31. /* Matches revision 5.0P */
  32.  
  33. #include <X11/Xmd.h>            /* defines things like CARD32 */
  34.  
  35.  
  36. /* This is FLOAT as defined and used by the Protocol Encoding */
  37. typedef float PEXFLOAT;
  38.  
  39.  
  40. typedef CARD32  pexAsfAttribute;
  41. typedef CARD8    pexAsfValue;
  42. typedef CARD32    pexBitmask;
  43. typedef CARD16    pexBitmaskShort;
  44. typedef CARD16  pexCoordType;     /* rational, nonrational */
  45. typedef CARD16    pexComposition;
  46. typedef CARD16    pexCullMode;
  47. typedef BYTE     pexDynamicType;
  48. typedef INT16    pexEnumTypeIndex;
  49. typedef XID     pexLookupTable;
  50. typedef CARD32     pexName;
  51. typedef XID     pexNameSet;
  52. typedef XID    pexPC;
  53. typedef XID    pexFont;
  54. typedef PEXFLOAT    pexMatrix[4][4];
  55. typedef PEXFLOAT     pexMatrix3X3[3][3];
  56. typedef XID    pexPhigsWks;
  57. typedef XID    pexPickMeasure;
  58. typedef XID    pexRenderer;
  59. typedef XID    pexSC;
  60. typedef XID    pexStructure;
  61. typedef CARD8    pexSwitch;
  62. typedef CARD16    pexTableIndex;
  63. typedef CARD16    pexTableType;    /* could be smaller if it ever helps */
  64. typedef CARD16    pexTextHAlignment;
  65. typedef CARD16    pexTextVAlignment;
  66. typedef CARD16    pexTypeOrTableIndex;
  67. typedef pexEnumTypeIndex    pexColourType;     /* ColourType */
  68.  
  69. /* included in others */
  70. typedef struct {
  71.     CARD16    length B16;
  72.     /* list of CARD8 -- don't swap */
  73. } pexString;
  74.  
  75. typedef struct {
  76.     pexStructure    sid B32;
  77.     PEXFLOAT        priority;
  78. } pexStructureInfo;
  79.  
  80. typedef struct {
  81.     PEXFLOAT    x;
  82.     PEXFLOAT    y;
  83. } pexVector2D;
  84.  
  85. typedef struct {
  86.     PEXFLOAT    x;
  87.     PEXFLOAT    y;
  88.     PEXFLOAT    z;
  89. } pexVector3D;
  90.  
  91. /* Coord structures */
  92.  
  93. typedef struct {
  94.     PEXFLOAT    x;
  95.     PEXFLOAT    y;
  96. } pexCoord2D;
  97.  
  98. typedef struct {
  99.     PEXFLOAT    x;
  100.     PEXFLOAT    y;
  101.     PEXFLOAT    z;
  102. } pexCoord3D;
  103.  
  104. typedef struct {
  105.     PEXFLOAT    x;
  106.     PEXFLOAT    y;
  107.     PEXFLOAT    z;
  108.     PEXFLOAT    w;
  109. } pexCoord4D;
  110.  
  111.  
  112. /* Colour structures */
  113. typedef struct {
  114.     PEXFLOAT    red;
  115.     PEXFLOAT    green;
  116.     PEXFLOAT    blue;
  117. } pexRgbFloatColour;
  118.  
  119. typedef struct {
  120.     PEXFLOAT    hue;
  121.     PEXFLOAT    saturation;
  122.     PEXFLOAT    value;
  123. } pexHsvColour;
  124.  
  125. typedef struct {
  126.     PEXFLOAT    hue;
  127.     PEXFLOAT    lightness;
  128.     PEXFLOAT    saturation;
  129. } pexHlsColour;
  130.  
  131. typedef struct {
  132.     PEXFLOAT    x;
  133.     PEXFLOAT    y;
  134.     PEXFLOAT    z;
  135. } pexCieColour;
  136.  
  137. typedef struct {
  138.     CARD8    red;
  139.     CARD8    green;
  140.     CARD8    blue;
  141.     CARD8    pad;
  142. } pexRgb8Colour;
  143.  
  144. typedef struct {
  145.     CARD16    red B16;
  146.     CARD16    green B16;
  147.     CARD16    blue B16;
  148.     CARD16    pad B16;
  149. } pexRgb16Colour;
  150.  
  151. typedef struct {
  152.     pexTableIndex    index B16;
  153.     CARD16        pad B16;
  154. } pexIndexedColour;
  155.  
  156. typedef struct {
  157.     union {
  158.     pexIndexedColour    indexed;
  159.     pexRgb8Colour        rgb8;
  160.     pexRgb16Colour        rgb16;
  161.     pexRgbFloatColour    rgbFloat;
  162.     pexHsvColour        hsvFloat;
  163.     pexHlsColour        hlsFloat;
  164.     pexCieColour        cieFloat;
  165.     } format;
  166. } pexColour;
  167.  
  168. typedef struct {
  169.     PEXFLOAT   first;
  170.     PEXFLOAT   second;
  171.     PEXFLOAT   third;
  172. } pexFloatColour;
  173.  
  174. typedef struct {
  175.     pexColourType    colourType B16;    /* ColourType enumerated type */
  176.     CARD16        unused B16;
  177.     /* SINGLE COLOUR(colourType) */
  178. } pexColourSpecifier;
  179.  
  180.  
  181. typedef struct {
  182.     pexEnumTypeIndex    approxMethod B16;
  183.     CARD16        unused B16;
  184.     PEXFLOAT        tolerance;
  185. } pexCurveApprox;
  186.  
  187. typedef struct {
  188.     INT16    x B16;
  189.     INT16     y B16;
  190.     PEXFLOAT     z;
  191. } pexDeviceCoord;
  192.  
  193. typedef struct {
  194.     INT16    x B16;
  195.     INT16     y B16;
  196. } pexDeviceCoord2D;
  197.  
  198. typedef struct {
  199.     INT16    xmin B16;
  200.     INT16    ymin B16;
  201.     INT16    xmax B16;
  202.     INT16    ymax B16;
  203. } pexDeviceRect;
  204.  
  205. typedef struct {
  206.     CARD16    elementType B16;
  207.     CARD16    length B16;
  208. } pexElementInfo;
  209.  
  210. typedef struct {
  211.     CARD16    whence B16;
  212.     CARD16    unused B16;
  213.     INT32    offset B32;
  214. } pexElementPos;
  215.  
  216. typedef struct {
  217.     pexElementPos    position1;
  218.     pexElementPos    position2;
  219. } pexElementRange;
  220.  
  221. typedef struct {
  222.     pexStructure    structure B32;
  223.     CARD32        offset B32;
  224. } pexElementRef;
  225.  
  226. typedef struct {
  227.     pexCoord2D lowerLeft;
  228.     pexCoord2D upperRight;
  229.     pexCoord2D concatpoint;
  230. } pexExtentInfo;
  231.  
  232. typedef struct {
  233.     pexEnumTypeIndex    index B16;
  234.     pexString        descriptor;
  235. } pexEnumTypeDesc;
  236.  
  237. typedef struct {
  238.     pexCoord3D    point;
  239.     pexVector3D    vector;
  240. } pexHalfSpace;
  241.  
  242. typedef struct {
  243.     pexNameSet    incl;
  244.     pexNameSet    excl;
  245. } pexNameSetPair;
  246.  
  247. typedef struct {
  248.     pexCoord2D    point;
  249.     pexVector2D    vector;
  250. } pexHalfSpace2D;
  251.  
  252. typedef struct {
  253.     CARD16    composition B16;
  254.     CARD16    unused B16;
  255.     pexMatrix    matrix;
  256. } pexLocalTransform3DData;
  257.  
  258. typedef struct {
  259.     CARD16        composition B16;
  260.     CARD16        unused B16;
  261.     pexMatrix3X3    matrix;
  262. } pexLocalTransform2DData;
  263.  
  264. typedef struct {
  265.     pexCoord3D    minval;
  266.     pexCoord3D    maxval;
  267. } pexNpcSubvolume;
  268.  
  269. /*  an OPT_DATA  structure cannot be defined because it has variable content
  270.  *  and size.  An union structure could be used to define a template for
  271.  *  the data. However, since unions pad to a fixed amount of space and the
  272.  *  protocol uses variable lengths, this is not appropriate for protocol
  273.  *  data types.  The most correct way of defining this data is to define
  274.  *  one data structure for every possible combination of color, normal and
  275.  *  edge data that could be given with a vertex or facet.
  276.  */
  277.  
  278. typedef struct {
  279.     pexStructure    sid B32;
  280.     CARD32        offset B32;
  281.     CARD32        pickid B32;
  282. } pexPickPath;
  283.  
  284. typedef struct {
  285.     pexTextVAlignment        vertical B16;
  286.     pexTextHAlignment        horizontal B16;
  287. } pexTextAlignmentData;
  288.  
  289. typedef struct {
  290.     pexSwitch        visibility;
  291.     CARD8        unused;
  292.     CARD16        order B16;
  293.     pexCoordType    type B16;
  294.     INT16        approxMethod B16;
  295.     PEXFLOAT        tolerance;
  296.     PEXFLOAT        tMin;
  297.     PEXFLOAT        tMax;
  298.     CARD32        numKnots B32;
  299.     CARD32        numCoord B32;
  300.     /* LISTof FLOAT(numKnots) -- length = order + number of coords */
  301.     /* LISTof {pexCoord3D|pexCoord4D}(numCoord) */
  302. } pexTrimCurve;
  303.  
  304. typedef struct {
  305.     PEXFLOAT        ambient;
  306.     PEXFLOAT        diffuse;
  307.     PEXFLOAT        specular;
  308.     PEXFLOAT        specularConc;
  309.     PEXFLOAT        transmission;  /* 0.0 = opaque, 1.0 = transparent */
  310.     pexColourSpecifier  specularColour;
  311.     /* SINGLE COLOUR() */
  312. } pexReflectionAttr;
  313.  
  314. typedef struct {
  315.     pexEnumTypeIndex    approxMethod B16;
  316.     CARD16        unused B16;
  317.     PEXFLOAT        uTolerance;
  318.     PEXFLOAT        vTolerance;
  319. } pexSurfaceApprox;
  320.  
  321.  
  322. typedef struct {
  323.     pexCoord3D    point;
  324.     /* SINGLE OPT_DATA() */
  325. } pexVertex;
  326.  
  327.  
  328. typedef struct {
  329.     pexDeviceCoord    minval;
  330.     pexDeviceCoord    maxval;
  331.     pexSwitch        useDrawable;
  332.     BYTE        pad[3];
  333. } pexViewport;
  334.  
  335. typedef struct {
  336.     CARD16        clipFlags B16;
  337.     CARD16        unused B16;
  338.     pexNpcSubvolume    clipLimits;
  339.     pexMatrix        orientation;
  340.     pexMatrix        mapping;
  341. } pexViewEntry;
  342.  
  343. typedef struct {
  344.     pexTableIndex    index B16;
  345.     CARD16        unused B16;
  346.     pexViewEntry    view;
  347. } pexViewRep;
  348.  
  349. /*
  350.  * typedefs for lookup tables
  351.  */
  352.  
  353. typedef struct {
  354.     CARD16    definableEntries B16;
  355.     CARD16    numPredefined B16;
  356.     CARD16    predefinedMin B16;
  357.     CARD16    predefinedMax B16;
  358. } pexTableInfo;
  359.  
  360. typedef struct {
  361.     pexEnumTypeIndex    lineType B16;
  362.     pexEnumTypeIndex    polylineInterp B16;
  363.     pexCurveApprox    curveApprox;
  364.     PEXFLOAT        lineWidth;
  365.     pexColourSpecifier    lineColour;
  366.     /* SINGLE COLOUR() */
  367. } pexLineBundleEntry;
  368.  
  369. typedef struct {
  370.     pexEnumTypeIndex    markerType B16;
  371.     INT16        unused B16;
  372.     PEXFLOAT        markerScale;
  373.     pexColourSpecifier    markerColour;
  374.     /* SINGLE COLOUR() */
  375. } pexMarkerBundleEntry;
  376.  
  377. typedef struct {
  378.     CARD16        textFontIndex B16;
  379.     CARD16        textPrecision B16;
  380.     PEXFLOAT        charExpansion;
  381.     PEXFLOAT        charSpacing;
  382.     pexColourSpecifier    textColour;
  383.     /* SINGLE COLOUR() */
  384. } pexTextBundleEntry;
  385.  
  386.  
  387. /*
  388.     Note that since an InteriorBundleEntry contains 4 embedded instances of 
  389.     pexColourSpecifier, a variable-sized item, a data structure cannot be
  390.     defined for it.
  391. */
  392. typedef struct {
  393.     pexEnumTypeIndex    interiorStyle B16;
  394.     INT16        interiorStyleIndex B16;
  395.     pexEnumTypeIndex    reflectionModel B16;
  396.     pexEnumTypeIndex    surfaceInterp B16;
  397.     pexEnumTypeIndex    bfInteriorStyle B16;
  398.     INT16        bfInteriorStyleIndex B16;
  399.     pexEnumTypeIndex    bfReflectionModel B16;
  400.     pexEnumTypeIndex    bfSurfaceInterp B16;
  401.     pexSurfaceApprox    surfaceApprox;
  402.     /* SINGLE pexColourSpecifier        surfaceColour    */
  403.     /* SINGLE pexReflectionAttr            reflectionAttr   */
  404.     /* SINGLE pexColourSpecifier        bfSurfaceColour  */
  405.     /* SINGLE pexReflectionAttr            bfReflectionAttr */
  406. } pexInteriorBundleEntry;
  407.  
  408. typedef struct {
  409.     pexSwitch        edges;
  410.     CARD8        unused;
  411.     pexEnumTypeIndex    edgeType B16;
  412.     PEXFLOAT        edgeWidth;
  413.     pexColourSpecifier    edgeColour;
  414.     /* SINGLE COLOUR() */
  415. } pexEdgeBundleEntry;
  416.  
  417. typedef struct {
  418.     pexColourType    colourType B16; 
  419.     CARD16        numx B16;
  420.     CARD16        numy B16;
  421.     CARD16        unused B16;
  422.     /* LISTof Colour(numx, numy) 2D array of colours */
  423. } pexPatternEntry;
  424.  
  425. /* a pexColourEntry is just a pexColourSpecifier
  426. */
  427.  
  428. typedef struct {
  429.     CARD32    numFonts B32;
  430.     /* LISTof pexFont( numFonts ) */
  431. } pexTextFontEntry;
  432.  
  433. /* a pexViewEntry is defined above */
  434.  
  435. typedef struct {
  436.     pexEnumTypeIndex    lightType B16;
  437.     INT16        unused B16;
  438.     pexVector3D        direction;
  439.     pexCoord3D        point;
  440.     PEXFLOAT        concentration;
  441.     PEXFLOAT        spreadAngle;
  442.     PEXFLOAT        attenuation1;
  443.     PEXFLOAT        attenuation2;
  444.     pexColourSpecifier    lightColour;
  445.     /* SINGLE COLOUR() */
  446. } pexLightEntry;
  447.  
  448. typedef struct {
  449.     pexSwitch        mode;
  450.     CARD8        unused;
  451.     CARD16        unused2 B16;
  452.     PEXFLOAT        frontPlane;
  453.     PEXFLOAT        backPlane;
  454.     PEXFLOAT        frontScaling;
  455.     PEXFLOAT        backScaling;
  456.     pexColourSpecifier    depthCueColour;
  457.     /* SINGLE COLOUR() */
  458. } pexDepthCueEntry;
  459.  
  460. typedef struct {
  461.     INT16    approxType;
  462.     INT16    approxModel;
  463.     CARD16    max1 B16;
  464.     CARD16    max2 B16;
  465.     CARD16    max3 B16;
  466.     CARD8    dither;
  467.     CARD8    unused;
  468.     CARD32    mult1 B32;
  469.     CARD32    mult2 B32;
  470.     CARD32    mult3 B32;
  471.     PEXFLOAT    weight1;
  472.     PEXFLOAT    weight2;
  473.     PEXFLOAT    weight3;
  474.     CARD32    basePixel B32;
  475. } pexColourApproxEntry;
  476.  
  477.  
  478. /*  Font structures */
  479.  
  480. typedef struct {
  481.     Atom    name B32;
  482.     CARD32    value B32;
  483. } pexFontProp;
  484.  
  485. typedef struct {
  486.     CARD32    firstGlyph B32;
  487.     CARD32    lastGlyph B32;
  488.     CARD32    defaultGlyph B32;
  489.     pexSwitch    allExist;
  490.     pexSwitch    strokeFont;
  491.     CARD16    unused B16;
  492.     CARD32    numProps B32;
  493.     /* LISTof pexFontProp(numProps) */
  494. } pexFontInfo;
  495.  
  496.  
  497. /* Text Structures */
  498.  
  499. typedef struct {
  500.     INT16    characterSet B16;
  501.     CARD8    characterSetWidth;
  502.     CARD8    encodingState;
  503.     CARD16    unused B16;
  504.     CARD16    numChars;
  505.     /* LISTof CHARACTER( numChars ) */
  506.     /* pad */
  507. } pexMonoEncoding;
  508.  
  509. /* CHARACTER is either a CARD8, a CARD16, or a CARD32 */
  510.  
  511.  
  512. /* Parametric Surface Characteristics types */
  513.  
  514. /* type 1 None */
  515.  
  516. /* type 2 Implementation Dependent */
  517.  
  518. typedef struct {
  519.     CARD16    placementType B16;
  520.     CARD16    unused B16;
  521.     CARD16    numUcurves B16;
  522.     CARD16    numVcurves B16;
  523. } pexPSC_IsoparametricCurves;        /* type 3 */
  524.  
  525. typedef struct {
  526.     pexCoord3D        origin;
  527.     pexVector3D        direction;
  528.     CARD16        numberIntersections B16;
  529.     CARD16        pad B16;
  530.     /* LISTof pexCoord3D( numIntersections ) */
  531. } pexPSC_LevelCurves;            /*  type 4: MC
  532.                         type 5: WC */
  533.  
  534. /* Pick Device data records */
  535.  
  536. typedef struct {
  537.     pexDeviceCoord2D    position;
  538.     PEXFLOAT        distance;
  539. } pexPD_DC_HitBox;                /* pick device 1 */
  540.  
  541. typedef pexNpcSubvolume pexPD_NPC_HitVolume;    /* pick device 2 */
  542.  
  543.  
  544. /* Output Command errors */
  545.  
  546. typedef struct {
  547.     CARD8    type;            /*  0 */
  548.     CARD8    errorCode;        /* 14 */
  549.     CARD16    sequenceNumber B16;
  550.     CARD32    resourceId B32;        /* renderer or structure */
  551.     CARD16    minorCode B16;
  552.     CARD8    majorCode;
  553.     CARD8    unused;
  554.     CARD16    opcode B16;        /* opcode of failed output command */
  555.     CARD16    numCommands B16;    /* number successfully done before error */
  556.     BYTE    pad[16];
  557. } pexOutputCommandError;
  558.  
  559.  
  560.  
  561. #endif /* PEXPROTOSTR_H */
  562.